home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / demos / fractals / mandlebrot1.s < prev    next >
Text File  |  1980-01-03  |  8KB  |  505 lines

  1. ; Quick MandleBrot code, Old Intuition stuff from the dark ages!
  2.  
  3.     Opt    c-
  4.     Section    "MandleBrotty Code",Code_c
  5.  
  6.     IncDir    Df1:
  7.  
  8. Start    Movem.l    d0-d7/a0-a6,-(sp) 
  9.     Bsr    KillSys      
  10.     
  11.     Lea    CopperList(pc),a0 
  12.     Lea    HardWare,a6      
  13.     Move.l    a0,Cop1Lc(a6)      
  14.     Move.w    #$83c0,DMACon(a6)
  15.     
  16.     Lea    $c0000,a0
  17.     Lea    $d0000,a1
  18. Clear    Move.l    #0,(a0)+
  19.     Cmp.l    a0,a1
  20.     Bne    Clear
  21.     
  22.     Bsr    DoMandle
  23.  
  24. Loop    Btst    #6,$Bfe001      
  25.     Bne    Loop      
  26.         
  27.     Bsr    ReturnSys      
  28.     Movem.l    (sp)+,d0-d7/a0-a6 
  29.     Moveq    #0,d0      
  30.     Rts
  31.  
  32. DoMandle    Lea    YPos(pc),a6
  33.     Move.w    #0,(a6)
  34.     Move.l    Screen(pc),a4
  35.     Add.l    #$2800,a4
  36.     Move.l    a4,a1
  37.     Add.l    #$2800,a4
  38.     Move.l    a4,a2
  39.     Add.l    #$2800,a4
  40.     Move.l    a4,a3
  41.     Add.l    #$2800,a4
  42.     Move.l    Screen(pc),a0
  43.     Lea    YVal(pc),a6
  44.     Move.w    #0,(a6)    
  45.     Sub.l    a6,a6
  46.     
  47. DoVert    Sub.l    a5,a5
  48.     Move.l    a6,d7
  49.     Lea    XVal(pc),a6
  50.     Move.w    #0,(a6)
  51.     Move.l    d7,a6
  52.  
  53. DoHoriz    Move.l    a6,d7
  54.     Move.w    XVal(pc),d1
  55.     Move.w    YVal(pc),d0
  56.     Move.l    d7,a6
  57.     Sub.l    MandV1(pc),d1
  58.     Sub.l    MandV2(pc),d0
  59.     Move.w    MandV3(pc),d7
  60.     Move.l    d0,d4
  61.     Move.l    d1,d5
  62.     Move.w    d0,d2
  63.     Muls.w    d2,d2
  64.     Move.w    d1,d3
  65.     Muls.w    d3,d3
  66.     
  67. FindColour    Sub.l    d3,d2
  68.     Asr.l    #8,d2
  69.     Add.w    d4,d2
  70.     Move.w    d1,d3
  71.     Muls.w    d0,d3
  72.     Asr.l    #7,d3
  73.     Add.w    d5,d3
  74.     Move.w    d2,d0
  75.     Move.w    d3,d1
  76.     Muls.w    d2,d2
  77.     Muls.w    d3,d3
  78.     Move.l    d2,d6
  79.     Add.l    d3,d6
  80.     Cmpi.l    #$40000,d6
  81.     Bhi.s    GotPixCol
  82.     Dbf    d7,FindColour
  83.     
  84. GotPixCol    Move.l    a5,d2
  85.     Move.w    d2,d3
  86.     Not.w    d3
  87.     Lsr.w    #3,d2
  88.     Add.w    a6,d2
  89.     Add.w    d7,d7
  90.     Add.w    Jumptab+2(pc,d7.w),d7
  91.     Jmp    Jumptab+2(pc,d7.w)
  92.  
  93. Jumptab    Incbin    SysData/MandleJump.Dat
  94.  
  95.     Bra    DonePixel
  96.     Bset    d3,0(a0,d2.w)
  97.     Bra    DonePixel
  98.     Bset    d3,0(a1,d2.w)
  99.     Bra    DonePixel
  100.     Bset    d3,0(a0,d2.w)
  101.     Bset    d3,0(a1,d2.w)
  102.     Bra    DonePixel
  103.     Bset    d3,0(a2,d2.w)
  104.     Bra    DonePixel
  105.     Bset    d3,0(a0,d2.w)
  106.     Bset    d3,0(a2,d2.w)
  107.     Bra    DonePixel
  108.     Bset    d3,0(a1,d2.w)
  109.     Bset    d3,0(a2,d2.w)
  110.     Bra    DonePixel
  111.     Bset    d3,0(a0,d2.w)
  112.     Bset    d3,0(a1,d2.w)
  113.     Bset    d3,0(a2,d2.w)
  114.     Bra    DonePixel
  115.     Bset    d3,0(a3,d2.w)
  116.     Bra    DonePixel
  117.     Bset    d3,0(a0,d2.w)
  118.     Bset    d3,0(a3,d2.w)
  119.     Bra    DonePixel
  120.     Bset    d3,0(a1,d2.w)
  121.     Bset    d3,0(a3,d2.w)
  122.     Bra    DonePixel
  123.     Bset    d3,0(a0,d2.w)
  124.     Bset    d3,0(a1,d2.w)
  125.     Bset    d3,0(a3,d2.w)
  126.     Bra    DonePixel
  127.     Bset    d3,0(a2,d2.w)
  128.     Bset    d3,0(a3,d2.w)
  129.     Bra    DonePixel
  130.     Bset    d3,0(a0,d2.w)
  131.     Bset    d3,0(a2,d2.w)
  132.     Bset    d3,0(a3,d2.w)
  133.     Bra    DonePixel
  134.     Bset    d3,0(a1,d2.w)
  135.     Bset    d3,0(a2,d2.w)
  136.     Bset    d3,0(a3,d2.w)
  137.     Bra    DonePixel
  138.     Bset    d3,0(a0,d2.w)
  139.     Bset    d3,0(a1,d2.w)
  140.     Bset    d3,0(a2,d2.w)
  141.     Bset    d3,0(a3,d2.w)
  142.     Bra    DonePixel
  143.     Bset    d3,0(a4,d2.w)
  144.     Bra    DonePixel
  145.     Bset    d3,0(a0,d2.w)
  146.     Bset    d3,0(a4,d2.w)
  147.     Bra    DonePixel
  148.     Bset    d3,0(a1,d2.w)
  149.     Bset    d3,0(a4,d2.w)
  150.     Bra    DonePixel
  151.     Bset    d3,0(a0,d2.w)
  152.     Bset    d3,0(a1,d2.w)
  153.     Bset    d3,0(a4,d2.w)
  154.     Bra    DonePixel
  155.     Bset    d3,0(a2,d2.w)
  156.     Bset    d3,0(a4,d2.w)
  157.     Bra    DonePixel
  158.     Bset    d3,0(a0,d2.w)
  159.     Bset    d3,0(a2,d2.w)
  160.     Bset    d3,0(a4,d2.w)
  161.     Bra    DonePixel
  162.     Bset    d3,0(a1,d2.w)
  163.     Bset    d3,0(a2,d2.w)
  164.     Bset    d3,0(a4,d2.w)
  165.     Bra    DonePixel
  166.     Bset    d3,0(a0,d2.w)
  167.     Bset    d3,0(a1,d2.w)
  168.     Bset    d3,0(a2,d2.w)
  169.     Bset    d3,0(a4,d2.w)
  170.     Bra    DonePixel
  171.     Bset    d3,0(a3,d2.w)
  172.     Bset    d3,0(a4,d2.w)
  173.     Bra    DonePixel
  174.     Bset    d3,0(a0,d2.w)
  175.     Bset    d3,0(a3,d2.w)
  176.     Bset    d3,0(a4,d2.w)
  177.     Bra    DonePixel
  178.     Bset    d3,0(a1,d2.w)
  179.     Bset    d3,0(a3,d2.w)
  180.     Bset    d3,0(a4,d2.w)
  181.     Bra    DonePixel
  182.     Bset    d3,0(a0,d2.w)
  183.     Bset    d3,0(a1,d2.w)
  184.     Bset    d3,0(a3,d2.w)
  185.     Bset    d3,0(a4,d2.w)
  186.     Bra    DonePixel
  187.     Bset    d3,0(a2,d2.w)
  188.     Bset    d3,0(a3,d2.w)
  189.     Bset    d3,0(a4,d2.w)
  190.     Bra    DonePixel
  191.     Bset    d3,0(a0,d2.w)
  192.     Bset    d3,0(a2,d2.w)
  193.     Bset    d3,0(a3,d2.w)
  194.     Bset    d3,0(a4,d2.w)
  195.     Bra    DonePixel
  196.     Bset    d3,0(a1,d2.w)
  197.     Bset    d3,0(a2,d2.w)
  198.     Bset    d3,0(a3,d2.w)
  199.     Bset    d3,0(a4,d2.w)
  200.     Bra    DonePixel
  201.     Bset    d3,0(a0,d2.w)
  202.     Bset    d3,0(a1,d2.w)
  203.     Bset    d3,0(a2,d2.w)
  204.     Bset    d3,0(a3,d2.w)
  205.     Bset    d3,0(a4,d2.w)
  206.  
  207. DonePixel    Btst    #6,$Bfe001
  208.     Beq.s    QuitMand
  209.     Addq.w    #1,a5
  210.     Move.l    a6,d7
  211.     Lea    XVal(pc),a6    
  212.     Addi.w    #2,(a6)
  213.     Move.l    d7,a6
  214.     Cmpa.w    #320,a5
  215.     Bne    DoHoriz
  216.     Move.l    a6,d7
  217.     Lea    YVal(pc),a6    
  218.     Addi.w    #2,(a6)
  219.     Move.l    d7,a6
  220.     Adda.w    #40,a6
  221.     
  222.     Move.l    a6,-(sp)
  223.     Lea    YPos(pc),a6
  224.     Add.w    #1,(a6)
  225.     Cmp.w    #256,(a6)
  226.     Beq    QuitM
  227.     Move.l    (sp)+,a6
  228.     Bra    DoVert
  229.  
  230. QuitM    Move.l    (sp)+,a6
  231. QuitMand    Rts       
  232.  
  233. KillSys    Bsr.s    SysWait    
  234.  
  235.     Move.l    $4,a6    
  236.     Lea    GFXName(pc),a1    
  237.     Moveq    #0,d0    
  238.     Jsr    -552(a6)    
  239.         
  240.     Lea    OldCop1(pc),a5
  241.     Move.l    $26(a0),$0(a5)    
  242.     Move.l    $32(a0),$4(a5)    
  243.     
  244.     Lea    HardWare,a6
  245.     Move.w    IntEnaR(a6),d0    
  246.     Move.w    DMAConR(a6),d1  
  247.     Or.w    #$8000,d0    
  248.     And.w    #$03ff,d1    
  249.     Or.w    #$8000,d1    
  250.     Move.w    d0,$8(a5)    
  251.     Move.w    d1,$a(a5)    
  252.     
  253.     Move.w    #$7fff,IntEna(a6) 
  254.     Move.w    #$7fff,DMACon(a6) 
  255.     Rts
  256.  
  257. SysWait    Move.w    #15,d7    
  258. SysWaitLoop    Move.l    #$05000,d1    
  259.     Bsr.s    WaitVBL    
  260.     Bsr.s    DoWaitVBL    
  261.     Dbf    d7,SysWaitLoop    
  262.     Rts
  263.  
  264. DoWaitVBL    Move.l    #$03000,d1    
  265. WaitVBL    Movem.l    d0-d1/a6,-(sp)    
  266.     Lea    HardWare,a6    
  267. WaitVBLLoop    Move.l    VPosR(a6),d0    
  268.     And.l    #$1ff00,d0    
  269.     Cmp.l    d1,d0    
  270.     Bne.s    WaitVBLLoop    
  271.     Movem.l    (sp)+,d0-d1/a6    
  272.     Rts        
  273.  
  274. ReturnSys    Lea    HardWare,a6    
  275.     Move.w    OldIntEna(pc),IntEna(a6)
  276.     Move.w    OldDMACon(pc),DMACon(a6)
  277.     Move.l    OldCop1(pc),Cop1lc(a6)
  278.     Move.l    OldCop2(pc),Cop2lc(a6)
  279.     Rts
  280.  
  281. GFXName    Dc.b    "graphics.library",0
  282.     Even
  283. OldCop1    Dc.l    0    
  284. OldCop2    Dc.l    0    
  285. OldIntEna    Dc.w    0    
  286. OldDmaCon    Dc.w    0    
  287.  
  288. XVal    Dc.w    0
  289. YVal    Dc.w    0
  290.  
  291. YPos    Dc.w    0
  292.  
  293. MandV1    Dc.l    260
  294. MandV2    Dc.l    410
  295. MandV3    Dc.w    30
  296.  
  297. Screen    Dc.l    $c0000
  298.  
  299. Cmv    Macro
  300.     Dc.w    \2,\1
  301.     EndM
  302.     
  303. Cwt    Macro
  304.     Dc.w    (\1*$100)+$01,$fffe
  305.     EndM    
  306.  
  307. Pal    Macro
  308.     Dc.w    $ffe1,$fffe
  309.     EndM    
  310.  
  311. EndCop    Macro
  312.     Dc.w    $ffff,$fffe
  313.     EndM    
  314.  
  315. CopperList    Cwt    $15    
  316.     Cmv    $0200,BplCon0    
  317.     Cmv    $00bb,BplCon1    
  318.     Cmv    $000a,BplCon2    
  319.     Cmv    $0034,DdfStrt    
  320.     Cmv    $00c8,DdfStop    
  321.     Cmv    $1681,DiwStrt    
  322.     Cmv    $36c1,DiwStop
  323.     Cmv    $0,BplMod1    
  324.     Cmv    $0,BplMod2    
  325.     
  326.     Cwt    $16
  327.     Cmv    $0000,Color00
  328.     Cmv    $0111,Color01
  329.     Cmv    $0222,Color02
  330.     Cmv    $0333,Color03
  331.     Cmv    $0444,Color04
  332.     Cmv    $0555,Color05
  333.     Cmv    $0666,Color06
  334.     Cmv    $0777,Color07
  335.     Cmv    $0888,Color08
  336.     Cmv    $0999,Color09
  337.     Cmv    $0aaa,Color10
  338.     Cmv    $0bbb,Color11
  339.     Cmv    $0ccc,Color12
  340.     Cmv    $0ddd,Color13
  341.     Cmv    $0eee,Color14
  342.     Cmv    $0fff,Color15
  343.     Cmv    $0fff,Color16
  344.     Cmv    $0fef,Color17
  345.     Cmv    $0fdf,Color18
  346.     Cmv    $0fcf,Color19
  347.     Cmv    $0fbf,Color20
  348.     Cmv    $0faf,Color21
  349.     Cmv    $0f9f,Color22
  350.     Cmv    $0f8f,Color23
  351.     Cmv    $0f7f,Color24
  352.     Cmv    $0f6f,Color25
  353.     Cmv    $0f5f,Color26
  354.     Cmv    $0f4f,Color27
  355.     Cmv    $0f3f,Color28
  356.     Cmv    $0f2f,Color29
  357.     Cmv    $0f1f,Color30
  358.     Cmv    $0f0f,Color31
  359.     
  360.     Cwt    $25
  361. CopperBPLS    Cmv    $0c,BplPt0h    
  362.     Cmv    $0000,BplPt0l    
  363.     Cmv    $0c,BplPt1h    
  364.     Cmv    $2800,BplPt1l    
  365.     Cmv    $0c,BplPt2h    
  366.     Cmv    $5000,BplPt2l    
  367.     Cmv    $0c,BplPt3h    
  368.     Cmv    $7800,BplPt3l    
  369.     Cmv    $0c,BplPt4h
  370.     Cmv    $a000,BplPt4l 
  371.     
  372.     Cwt    $28    
  373.     Cmv    $5200,BplCon0    
  374.     
  375.     Pal
  376.     Cwt    $28    
  377.     Cmv    $0200,BplCon0
  378.                     
  379.     EndCop
  380.  
  381. ****Custom Chip Registers****
  382.  
  383. Hardware    = $Dff000
  384.  
  385. ;Control Registers
  386.  
  387. Dmaconr    = $002
  388. Vposr    = $004
  389. Vhposr    = $006
  390. Joy0dat    = $00A
  391. Joy1dat    = $00C
  392. Clxdat    = $00E
  393. Intenar    = $01C
  394. Intereqr    = $01E
  395. Copcon    = $02E
  396.  
  397. ;Blitter Registers
  398.  
  399. Bltcon0    = $040
  400. Bltcon1    = $042
  401. Bltafwm    = $044
  402. Bltalwm    = $046
  403. Bltcpth    = $048
  404. Bltcptl    = $04A
  405. Bltbpth    = $04C
  406. Bltbptl    = $04E
  407. Bltapth    = $050
  408. Bltaptl    = $052
  409. Bltdpth    = $054
  410. Bltdptl    = $056
  411. Bltsize    = $058
  412. Bltcmod    = $060
  413. Bltbmod    = $062
  414. Bltamod    = $064
  415. Bltdmod    = $066
  416. Bltcdat    = $070
  417. Bltbdat    = $072
  418. Bltadat    = $074
  419.  
  420. ;Copper Registers
  421.  
  422. Cop1lc    = $080
  423. Cop1lch    = $080
  424. Cop1lcl    = $082
  425. Cop2lc    = $084
  426. Cop2lch    = $084
  427. Cop2lcl    = $086
  428. Copjmp1    = $088
  429. Copjmp2    = $08A
  430. Diwstrt    = $08E
  431. Diwstop    = $090
  432. Ddfstrt    = $092
  433. Ddfstop    = $094
  434. Dmacon    = $096
  435. Clxcon    = $098
  436. Intena    = $09A
  437. Intreq    = $09C
  438.  
  439. ;BitPlane Registers 
  440.  
  441. BplCon0    = $100
  442. BplCon1    = $102
  443. BplCon2    = $104
  444. BplMod1    = $108
  445. BplMod2    = $10a
  446.  
  447. BplPt0h    = $0e0
  448. BplPt0l    = $0e2
  449. BplPt1h    = $0e4
  450. BplPt1l    = $0e6
  451. BplPt2h    = $0e8
  452. BplPt2l    = $0ea
  453. BplPt3h    = $0ec
  454. BplPt3l    = $0ee
  455. BplPt4h    = $0f0
  456. BplPt4l    = $0f2
  457. BplPt5h    = $0f4
  458. BplPt5l    = $0f6
  459.  
  460. ;Colour Registers
  461.  
  462. Color00    = $180
  463. Color01    = $182
  464. Color02    = $184
  465. Color03    = $186
  466. Color04    = $188
  467. Color05    = $18a
  468. Color06    = $18c
  469. Color07    = $18e
  470. Color08    = $190
  471. Color09    = $192
  472. Color10    = $194
  473. Color11    = $196
  474. Color12    = $198
  475. Color13     = $19a
  476. Color14     = $19c
  477. Color15     = $19e
  478. Color16     = $1a0
  479. Color17     = $1a2
  480. Color18     = $1a4
  481. Color19     = $1a6
  482. Color20     = $1a8
  483. Color21     = $1aa
  484. Color22     = $1ac
  485. Color23     = $1ae
  486. Color24     = $1b0
  487. Color25     = $1b2
  488. Color26     = $1b4
  489. Color27     = $1b6
  490. Color28     = $1b8
  491. Color29     = $1ba
  492. Color30     = $1bc
  493. Color31     = $1be
  494.  
  495. EcsNop    = $1fe
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.